﻿using System; 
using System.Text;
using System.Collections.Generic; 
using System.Data;
using System.Data.SqlClient;
using ART.Data;
using ART.Common;
using ART.Model;
using ART.Cache;

namespace ART.BLL {
  //SchoolZY
 	public partial class B_SchoolZY
	{
   		
		public B_SchoolZY()
		{}
        #region __________基础方法__________
		/// <summary>
		/// 删除指定缓存
		/// </summary>
		public void ClearCache(string key)
		{
		    string CacheKey = "BLL/SchoolZY";
			if(!string.IsNullOrEmpty(key)){
			    CacheKey+="/"+key;
			}
			LRSCache.GetCacheService().RemoveObject(CacheKey);
		}
		/// <summary>
		/// 增加一条数据
		/// </summary>
		public int  Add(ART.Model.M_SchoolZY model)
		{
			StringBuilder strSql=new StringBuilder();
			strSql.Append("insert into SchoolZY(");			
            strSql.Append("Id,SchoolId,SubobjectName,ParentId,Sort,ColPath");
			strSql.Append(") values (");
            strSql.Append("@Id,@SchoolId,@SubobjectName,@ParentId,@Sort,@ColPath");            
            strSql.Append(") ");            
            strSql.Append(";select @@IDENTITY");	
			#region __________参数__________	
			SqlParameter[] parameters = {
                         new SqlParameter("@Id", SqlDbType.Int,4) , 
			            new SqlParameter("@SchoolId", SqlDbType.Int,4) ,            
                        new SqlParameter("@SubobjectName", SqlDbType.NVarChar,200) ,            
                        new SqlParameter("@ParentId", SqlDbType.Int,4) ,            
                        new SqlParameter("@Sort", SqlDbType.Int,4) ,            
                        new SqlParameter("@ColPath", SqlDbType.NVarChar,500)             
              
            };

            parameters[0].Value = model.Id;
            parameters[1].Value = model.SchoolId;                        
            parameters[2].Value = model.SubobjectName;                        
            parameters[3].Value = model.ParentId;                        
            parameters[4].Value = model.Sort;
            parameters[5].Value = getColPath(model.ParentId) + model.Id + ",";       			
            #endregion
			   
			object obj = SqlHelper.ExecScalar(strSql.ToString(),parameters);			
			if (obj == null)
			{
				return 0;
			}
			else
			{
				                    
            	return Convert.ToInt32(obj);
                                                                  
			}			   
            		
		}

		/// <summary>
		/// 更新一条数据
		/// </summary>
		public bool Update(ART.Model.M_SchoolZY model)
		{
		    StringBuilder strSql=new StringBuilder();
			#region __________语句__________
			strSql.Append("update SchoolZY set ");
			                                                
            strSql.Append(" SchoolId = @SchoolId , ");                                    
            strSql.Append(" SubobjectName = @SubobjectName , ");                                    
            strSql.Append(" ParentId = @ParentId , ");                                    
            strSql.Append(" Sort = @Sort , ");                                    
            strSql.Append(" ColPath = @ColPath  ");            			
			strSql.Append(" where Id=@Id ");
			
			#endregion	
			
			#region __________参数__________	
            SqlParameter[] parameters = {
			            new SqlParameter("@Id", SqlDbType.Int,4) ,            
                        new SqlParameter("@SchoolId", SqlDbType.Int,4) ,            
                        new SqlParameter("@SubobjectName", SqlDbType.NVarChar,200) ,            
                        new SqlParameter("@ParentId", SqlDbType.Int,4) ,            
                        new SqlParameter("@Sort", SqlDbType.Int,4) ,            
                        new SqlParameter("@ColPath", SqlDbType.NVarChar,500)             
              
            };
            			            
            parameters[0].Value = model.Id;                        
            parameters[1].Value = model.SchoolId;                        
            parameters[2].Value = model.SubobjectName;                        
            parameters[3].Value = model.ParentId;                        
            parameters[4].Value = model.Sort;
            parameters[5].Value = getColPath(model.ParentId) + model.Id + ",";           			
            #endregion
			
            int rows=SqlHelper.ExecNonQuery(strSql.ToString(),parameters);
			if (rows > 0)
			{
			//string cachekey="info_"+Id;
			//ClearCache(cachekey);
				return true;
			}
			else
			{
				return false;
			}
		}

		/// <summary>
		/// 删除一条数据
		/// </summary>
		public bool Delete(int Id)
		{
			StringBuilder strSql=new StringBuilder();
			strSql.Append("delete from SchoolZY ");
			strSql.Append(" where Id=@Id");
						SqlParameter[] parameters = {
					new SqlParameter("@Id", SqlDbType.Int,4)
			};
			parameters[0].Value = Id;

			int rows=SqlHelper.ExecNonQuery(strSql.ToString(),parameters);
			
			//string cachekey="info_"+Id;
			//ClearCache(cachekey);
			
			if (rows > 0)
			{
				return true;
			}
			else
			{
				return false;
			}
		}
				/// <summary>
		/// 删除一条数据
		/// </summary>
		public bool DeleteList(string Idlist )
		{
			StringBuilder strSql=new StringBuilder();
			strSql.Append("delete from SchoolZY ");
			strSql.Append(" where ID in ("+Idlist + ")  ");
			int rows=SqlHelper.ExecNonQuery(strSql.ToString());
			if (rows > 0)
			{
				return true;
			}
			else
			{
				return false;
			}
		}
		
		/// <summary>
		/// 得到一个对象实体
		/// </summary>
		public ART.Model.M_SchoolZY GetModel(int Id)
		{
			//string CacheKey = "BLL/SchoolZY/info_" + Id;
			//object objModel = LRSCache.GetCacheService().RetrieveObject(CacheKey);
			// if (objModel == null)
			 //{
				StringBuilder strSql=new StringBuilder();
				strSql.Append("select * from SchoolZY ");
				strSql.Append(" where Id=@Id");
				
							SqlParameter[] parameters = {
					new SqlParameter("@Id", SqlDbType.Int,4)
			};
			parameters[0].Value = Id;

				
				ART.Model.M_SchoolZY model=new ART.Model.M_SchoolZY();
				DataSet ds=SqlHelper.ExecDataSet(strSql.ToString(),parameters);
				
				if(ds.Tables[0].Rows.Count>0)
				{
				    #region __________实体赋值__________
													if(ds.Tables[0].Rows[0]["Id"].ToString()!="")
				{
					model.Id=int.Parse(ds.Tables[0].Rows[0]["Id"].ToString());
				}
																																if(ds.Tables[0].Rows[0]["SchoolId"].ToString()!="")
				{
					model.SchoolId=int.Parse(ds.Tables[0].Rows[0]["SchoolId"].ToString());
				}
																																				model.SubobjectName= ds.Tables[0].Rows[0]["SubobjectName"].ToString();
																												if(ds.Tables[0].Rows[0]["ParentId"].ToString()!="")
				{
					model.ParentId=int.Parse(ds.Tables[0].Rows[0]["ParentId"].ToString());
				}
																																if(ds.Tables[0].Rows[0]["Sort"].ToString()!="")
				{
					model.Sort=int.Parse(ds.Tables[0].Rows[0]["Sort"].ToString());
				}
																																				model.ColPath= ds.Tables[0].Rows[0]["ColPath"].ToString();
																					
						
					#endregion
					
					//LRSCache.GetCacheService().AddObject(CacheKey, objModel, 2*60*60);		
					return model;
				}
				else
				{
					return null;
				}
				 
			 //}
			 //return (ART.Model.M_SchoolZY)objModel;
		}

		/// <summary>
		/// 获得数据列表
		/// </summary>
		public DataSet GetList(string strWhere)
		{
			return GetList(0,strWhere,"");
		}
		/// <summary>
		/// 获得前几行数据
		/// </summary>
		public DataSet GetList(int Top,string strWhere,string filedOrder)
		{
			return GetList(0,"*",strWhere,filedOrder);
		}
		/// <summary>
		/// 获得前几行数据
		/// </summary>
		public DataSet GetList(int Top,string FieldName,string strWhere,string filedOrder)
		{
			StringBuilder strSql=new StringBuilder();
			strSql.Append("select ");
			if(Top>0)
			{
				strSql.Append(" top "+Top.ToString());
			}
			strSql.Append(" "+FieldName+" FROM SchoolZY ");
			if(strWhere.Trim()!="")
			{
				strSql.Append(" where "+strWhere);
			}
			if(filedOrder.Trim()!="")
			{
				strSql.Append(" order by " + filedOrder);
			}
			return SqlHelper.ExecDataSet(strSql.ToString());
		}
#endregion

      #region __________自定义方法__________
        public int GetMaxId()
        {
            string cmdText = "select max(id) from SchoolZY ";
            object obj = SqlHelper.ExecScalar(cmdText, new SqlParameter[0]);
            if (obj == DBNull.Value || obj == null)
            {
                return 1;
            }
            else
            {

                return Convert.ToInt32(obj) + 1;

            }
        }
        private string getColPath(int pareid)
        {
            string tmp = "";
            M_SchoolZY di = GetModel(pareid);
            if (di != null && di.ParentId != 0)
            {
                tmp = "," + getColPath(di.ParentId) + "," + pareid + ",";
            }
            else
            {
                tmp = "," + pareid + ",";
            }
            tmp = tmp.Replace(",,", ",");
            if (!tmp.StartsWith(",0,"))
            {
                tmp = ",0," + tmp;
            }
            return tmp.Replace(",,", ",");
        }
        /// <summary>
        /// 获取字符名
        /// </summary>
        /// <param name="id"></param>
        /// <param name="isinparent"></param>
        /// <returns></returns>
        public string GetString(int id, bool isinparent)
        {
            string tmp = "";
            M_SchoolZY di = GetModel(id);
            if (di != null)
            {
                if (di.ParentId != 0 && isinparent)
                {
                    tmp = GetString(di.ParentId, isinparent) + "-" + di.SubobjectName;
                }
                else
                {
                    tmp = di.SubobjectName;
                }
            }

            return tmp;
        }
      #endregion 
	}
}

